package ai;

import java.awt.color.ColorSpace;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;


public class GrayScale {
	public static void main(String[] args) {
		BufferedImage rgbImage = null;
		try { rgbImage = ImageIO.read(new File("ligabue.jpg")); //importo l'immagine
		}
		catch (IOException e) {
		}
		
		ColorSpace space = ColorSpace.getInstance (ColorSpace.CS_GRAY);
		ColorConvertOp operation = new ColorConvertOp (space, null);
		BufferedImage greyImage = operation.filter (rgbImage, null);  //converto l'immagine in scala di grigi
		
		int x = greyImage.getWidth();
		int y = greyImage.getHeight();
		String[][] immagine = new String[x][y];
		for(int j=0; j<y; j++) {
			for(int i=0; i<x; i++) {
				immagine[i][j] = Integer.toHexString(greyImage.getRGB(i,j)); //inserisco ogni pixel dell'immagine nell'array 'immagine'
			}
		}

		for(int j=0; j<y; j++) {
			for(int i=0; i<x; i++) {
				String ridotto = immagine[i][j].substring(2);
				int convertito = Integer.parseInt(ridotto,16);
				//double riconvertito = convertito;
				int scalato = (convertito*100)/16777215;
				scalato = 100 - scalato;
				immagine[i][j] = ""+scalato;  //scalo ogni pixel in un numero da 0 a 100
			}		                          //100 = nero
		}                                     //0 = bianco
		
		for(int j=0; j<y; j++) {
			for(int i=0; i<x; i++) {
				System.out.print(immagine[i][j]+"|"); //stampo prova
			}
			System.out.println();
		}
	}
}
